package com.headFirstModel.SingleRow;

/**
 * 懒汉式创建单列
 */

/**
 * 以采用单例模式，具体的场景如下：
 1.要求生成唯一序列号的环境；
 2.整个项目中需要一个共享访问点或共享数据，例如一页面上的计数器，可以不用把每次刷新都记录到数据库中，使用单例模式保持计数器的值，并确保是线程安全的；
 3.创建一个对象需要消耗的资源过多，如要访问IO和数据库等资源
 4.需要定义大量的静态常量和静态方法（如工具类）的环境，可以采用单例模式（当然，也可以直接声明为static的方式
 */
public class Singleton {
    //构造方法初始化
    private Singleton(){
    }
    private static Singleton singleton;

    public static Singleton getSingleton(){
        if(singleton!=null){
            synchronized(Singleton.class){
                if (singleton!=null) singleton=new Singleton();
            }
        }
        return  singleton;
    }
}
